export const debounceContent = {
  problem: `实现一个防抖函数 debounce，要求：

1. 函数接收两个参数：要防抖的函数 fn 和延迟时间 delay
2. 如果在 delay 时间内再次调用，则重新计时
3. 只有在 delay 时间后没有新的调用，才执行函数
4. 返回一个防抖后的函数

示例：
const debouncedFn = debounce(() => console.log('执行'), 1000);
debouncedFn(); // 不会立即执行
debouncedFn(); // 重新计时
// 1秒后没有新的调用，才会执行 console.log('执行')

请实现这个防抖函数。`,
  
  solution: `function debounce(fn, delay) {
  let timer = null;
  
  return function (...args) {
    // 清除之前的定时器
    if (timer) {
      clearTimeout(timer);
    }
    
    // 设置新的定时器
    timer = setTimeout(() => {
      fn.apply(this, args);
    }, delay);
  };
}

// 测试代码
const debouncedFn = debounce(() => console.log('执行'), 1000);
debouncedFn();
debouncedFn();
// 1秒后输出：执行`,
  
  explanation: `防抖函数的核心思想是延迟执行，如果在延迟期间再次调用，则重新计时。

实现步骤：
1. 使用闭包保存定时器变量
2. 每次调用时清除之前的定时器
3. 设置新的定时器
4. 使用 apply 确保 this 指向正确

关键点：
- 使用 setTimeout 实现延迟
- 使用 clearTimeout 清除之前的定时器
- 使用 apply 传递参数和 this 上下文
- 闭包保存定时器状态`,
  
  practice: {
    title: '防抖函数练习',
    description: '练习实现防抖函数，测试不同的使用场景'
  }
}
